#pragma once

#include<string>
#include<map>
#include<vector>
#include<set>
using std::string;
using std::map;
using std::vector;
using std::set;

class Configuration;
class SplitToolCppjieba;

class WebPage
{
public:
    friend bool operator==(const WebPage & lhs, const WebPage & rhs);  //判断两篇文档是否相等 
    friend bool operator < (const WebPage & lhs, const WebPage & rhs); //对文档按 Docid 进行排序
    WebPage(const string & doc, Configuration & config, SplitToolCppjieba & jieba);
    ~WebPage();
    string getDoc() const;//获取文档
    int getDocId();//获取文档的id
    string getUrl();//获取URL
    string getTitle();//获取文章标题
    string getContent();//获取文章内容
    string getSunmary();//获取文章摘要

    map<string, int> & getWordsMap(); //获取文档的词频统计 map

    void processDoc(const string & doc, Configuration  & config, SplitToolCppjieba & cppjieba); //对格式化文档进行处理


private:
    const static int TOPK_NUMBER = 20; 
    string _doc; //整篇文档，包含 xml 在内 
    int _docId; //文档 id 
    string _docTitle; //文档标题 
    string _docUrl; //文档 URL 
    string _docContent; //文档内容 
    string _docSummary; //文档摘要，需自动生成，不是固定的 
    vector<string> _topWords; //词频最高的前 20 个词 
    map<string,int> _wordsMap; //保存每篇文档的所有词语和词频，不包括停用词
};

